//
//  AppInfoView.m
//  AppManager
//
//  Created by allen on 16/4/7.
//  Copyright © 2016年 allen. All rights reserved.
//

#import "AppInfoView.h"
#import "AppInfoModel.h"

@interface AppInfoView()

@property (weak, nonatomic) IBOutlet UIImageView * iconImage;
@property (weak, nonatomic) IBOutlet UILabel * nameLable;
@property (strong, nonatomic) AppInfoModel * appInfo;

@end

@implementation AppInfoView

/** 获取xib文件中的第一个view并返回,工厂方法，私有方法，对外不可见 */
+ (instancetype)appInfoView{
    // loadNibNamed 会将名为AppInfoView的xib文件中定义的所有视图全部加载出来，并且按照xib中定义的顺序，返回一个视图的数组
    NSArray * array = [[NSBundle mainBundle]loadNibNamed:@"AppInfoView" owner:nil options:nil];
    //    NSLog(@"%@", array);
    return [array firstObject];
}

/** 通过模型数据得到定义好的view,工厂方法 */
+ (instancetype)appInfoViewWithAppInfo:(AppInfoModel *)appInfo{
    AppInfoView * view = [self appInfoView];
    // 通过模型数据给属性赋值
    view.appInfo = appInfo;
    return view;
}

/** 通过模型数据给属性赋值 */
- (void)setAppInfo:(AppInfoModel *)appInfo{
    // 在setter方法中千万不要忘记用成员变量记录参数！
    _appInfo = appInfo;
    self.iconImage.image = appInfo.image;
    self.nameLable.text = appInfo.name;
}

- (IBAction)clickDownload:(id)sender {
    UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(80, 400, 160, 40)];
    // 文字居中
    label.textAlignment = NSTextAlignmentCenter;
    // 背景颜色
    label.backgroundColor = [UIColor lightGrayColor];
    label.text = [NSString stringWithFormat:@"%@下载完成", self.nameLable.text];
    label.font = [UIFont systemFontOfSize:13.0];
    label.alpha = 1.0;
    // AppInfoView的父视图就是viewController的view
    [self.superview addSubview:label];
    
    // 动画效果
    // 动画效果完成之后，将Label从视图中删除
    // 首尾式动画，只能做动画，要处理完成后的操作不方便
    //    [UIView beginAnimations:nil context:nil];
    //    [UIView setAnimationDuration:1.0];
    //    label.alpha = 1.0;
    //    [UIView commitAnimations];
    // 块动画比首尾式动画简单，而且能够控制动画结束后的操作
    // 在iOS中，基本都使用block动画
    
    [UIView animateWithDuration:2.0 animations:^{
        label.alpha = 0.0;
    }completion:^(BOOL finished){
        [label removeFromSuperview];
    }];
    
}

@end
